Skip to content

feat(fs5.5): add connector-aware display output proofs#60

Merged
adybag14-cyber merged 1 commit intomainfrom
fs55-ethernet-integration
Mar 19, 2026
Merged

feat(fs5.5): add connector-aware display output proofs#60
adybag14-cyber merged 1 commit intomainfrom
fs55-ethernet-integration

Conversation

@adybag14-cyber
Copy link
Owner

@adybag14-cyber adybag14-cyber commented Mar 19, 2026

Summary by CodeRabbit

Release Notes

  • New Features

    • Added multi-display output entry API enabling queries of connected outputs with metadata including connector type, resolution, EDID presence, and capability flags.
    • Introduced new display-output tool commands for enumerating and inspecting individual output entries.
  • Documentation

    • Updated documentation reflecting expanded display output capabilities and per-output entry enumeration.
  • Tests

    • Increased test coverage; local validation now passes 399/399 tests.

@coderabbitai
Copy link

coderabbitai bot commented Mar 19, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ab847f74-f1b8-4c2d-bef7-26320a23cc80

📥 Commits

Reviewing files that changed from the base of the PR and between 297c0e3 and 509f09a.

📒 Files selected for processing (13)
  • README.md
  • docs/zig-port/FS5_5_HARDWARE_DRIVERS_SYSTEMS.md
  • docs/zig-port/PHASE_CHECKLIST.md
  • docs/zig-port/PORT_PLAN.md
  • scripts/baremetal-qemu-virtio-gpu-display-probe-check.ps1
  • src/baremetal/abi.zig
  • src/baremetal/display_output.zig
  • src/baremetal/tool_exec.zig
  • src/baremetal/tool_service.zig
  • src/baremetal/tool_service/codec.zig
  • src/baremetal/virtio_gpu.zig
  • src/baremetal_main.zig
  • src/pal/framebuffer.zig

📝 Walkthrough

Walkthrough

The PR extends the baremetal display subsystem to enumerate and export per-output metadata (connection status, resolution, connector type, EDID info) via new oc_display_output_* exports and APIs, replacing simple single-output tracking with bounded multi-output support accessible through tool commands and service requests.

Changes

Cohort / File(s) Summary
Documentation Updates
README.md, docs/zig-port/PHASE_CHECKLIST.md, docs/zig-port/PORT_PLAN.md, docs/zig-port/FS5_5_HARDWARE_DRIVERS_SYSTEMS.md
Updated documentation to reflect new bounded per-output entry export feature; changed test validation count from 398/398 to 399/399; revised EDID-backed virtio-gpu capability descriptions to include output-entry metadata verification and enumeration instead of single-mode state tracking.
ABI Definition
src/baremetal/abi.zig
Added new BaremetalDisplayOutputEntry extern struct defining per-output fields: connection status, scanout index, connector type, EDID presence, resolution/timing, identifiers, and capability flags.
Display Output Core
src/baremetal/display_output.zig
Implemented multi-output tracking with exported oc_display_output_entry_count_data, oc_display_output_entries_data array, and new public APIs (outputCount(), outputEntry()); added VirtioGpuScanoutUpdate struct and extended update logic to populate output entries from enumerated scanouts with connector-type inference.
Virtio GPU Enumeration
src/baremetal/virtio_gpu.zig
Replaced single-scanout selection with full enumerateScanouts() path that iterates bounded scanouts, fetches per-scanout EDID, infers connector types from capability flags; added DetailedProbe bundling scanout array; refactored probe control flow with connector-preference selection (selectScanoutForConnector(), probeAndPresentPatternForConnector()).
Tool Commands & Handlers
src/baremetal/tool_exec.zig, src/baremetal/tool_service.zig, src/baremetal/tool_service/codec.zig
Added new tool commands display-outputs and display-output <index> with corresponding exec/service handlers; extended RequestOp enum and FramedRequest union to support new display queries; implemented per-output metadata reporting with bounds checking and error handling.
Main Probe Integration
src/baremetal_main.zig
Enhanced virtio-gpu display probe to validate output entry count and metadata (connection state, scanout index, connector type, sizes, capability flags, EDID presence); added exported APIs oc_display_output_entry_count() and oc_display_output_entry(); extended probe error enum and integrated detailed scanout selection; updated RTL8139 service test to include new display queries.
Public API Surface
src/pal/framebuffer.zig
Re-exported BaremetalDisplayOutputEntry as DisplayOutputEntry; added public APIs displayOutputCount() and displayOutputEntry(index) delegating to display\_output module.
Probe Script
scripts/baremetal-qemu-virtio-gpu-display-probe-check.ps1
Extended QEMU+GDB runtime probe to resolve and read oc_display_output_entry_count_data and oc_display_output_entries_data symbols; added offset constants for output-entry fields; emits new DISPLAY_OUTPUT_* values and incorporates output entry assertions into $pass condition.

Sequence Diagram

sequenceDiagram
    participant VirtioGPU as Virtio GPU
    participant Enumerate as enumerateScanouts()
    participant EDID as EDID Parser
    participant DisplayOut as display_output
    participant Export as oc_display_output_*_data
    participant Tool as Tool/Service

    VirtioGPU->>Enumerate: iterate bounded scanouts
    Enumerate->>EDID: fetch EDID per scanout
    EDID->>Enumerate: parsed capability flags & timings
    Enumerate->>Enumerate: infer connector type from flags
    Enumerate->>DisplayOut: provide VirtioGpuScanoutUpdate[]
    DisplayOut->>Export: populate oc_display_output_entries_data
    DisplayOut->>Export: set oc_display_output_entry_count_data
    Tool->>DisplayOut: query outputCount()/outputEntry(idx)
    DisplayOut->>Tool: return bounded per-output metadata
    Tool->>Tool: report connection/resolution/connector info
Loading

Possibly related PRs

Poem

🐰 Scanouts now sing in numbered rows,
Each output's secrets that GDB shows—
Connectors mapped and EDID read,
Display entries soft, deftly spread.
From one to many, bounds held tight,
A rabbit's probe shines ever bright! ✨

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fs55-ethernet-integration
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

@adybag14-cyber adybag14-cyber merged commit f5305f8 into main Mar 19, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant